Python jieba分词(使用默认词典,自定义词典,对文件内容分词并统计词频) |
您所在的位置:网站首页 › python 标注词性 › Python jieba分词(使用默认词典,自定义词典,对文件内容分词并统计词频) |
本文仅作为本人的笔记分享,便于以后查找,也可以提供一些学习笔记给同学们,如有错误,欢迎批评指正 一.jieba分词的三种模式 1.全模式:将可以成词的词语都扫描出来,但是不解决歧义 2.精确模式:将所有句子精确地分开 3.搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 import jieba ''' jieba分词的三种模式: 1.全模式:将可以成词的词语都扫描出来,但是不解决歧义 2.精确模式:将所有句子精确地分开 3.搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 ''' #使用默认词典进行分词 seg=jieba.cut("李小福是创新办主任也是云计算方面的专家",cut_all=True)#全模式 print("/".join(seg)) seg=jieba.cut("李小福是创新办主任也是云计算方面的专家")#默认精确模式 也可以设置cut_all=False print("/".join(seg)) seg=jieba.cut_for_search("李小福是创新办主任也是云计算方面的专家")#搜索引擎模式 print("/".join(seg))(我在运行时遇到这种错误,不应该把Python文件命名为jieba.py,换个别的名字就好了) 二.自定义词典 使用jieba.load_userdict(“filepath”)方法获取自定义词典 我自定义两个词典 词典1:创新办 1000 云计算 20000 词典2:新办 100000
注意:在自定义词典的文件中,词语与频数之间只能有一个空格,而且文件要保存为UTF-8编码格式,输入文件路径时要 在 \前面加上 \转义或者在路径前面加 r(我写的时候出现的就是上面三种错误);并且我们自定义的词典也只是将词语添加到jieba自带的词典当中,所以词语的频数如果比jieba默认词典的频数少,不起作用(例如:我将词典2中的“新办”的频数改为10,则分词时“新办”不会在一起,而是按照默认词典分为“创新/办“”) 三.对文件内容分词并统计词频 事先要创建三个文本文件,一个存放要分词的内容的文件,一个存放分词之后的结果的文件,另一个存放词语和词频 1.创建停用词 我使用的是哈工大停用词表 (下载地址:https://github.com/goto456/stopwords 下载之后里面的hit_stopwords.txt就是了) 2.对句子进行分词 #对句子进行分词 def seg_sentence(sentence): sentence_seged=jieba.cut(sentence.strip()) stopwords=stopwordslist(r"C:\Users\de'l'l\Desktop\学习\信息检索与原理\哈工大停用词表.txt")#这里加载停用词的路径 outstr="" for word in sentence_seged: if word not in stopwords: if word!='\t': outstr+=word outstr+=" " return outstr3.读取文件内容,分词后写入文件中 inputs=open(r"C:\Users\de'l'l\Desktop\学习\信息检索与原理\wenjian.txt",'r',encoding='utf-8')#加载要处理的文件的路径 outputs=open(r"C:\Users\de'l'l\Desktop\学习\信息检索与原理\output.txt",'w',encoding='utf-8')#加载处理后的文件路径 for line in inputs: line_seg=seg_sentence(line)#这里的返回值是字符串 outputs.write(line_seg) outputs.close() inputs.close()4.统计词频 with open(r"C:\Users\de'l'l\Desktop\学习\信息检索与原理\output.txt", 'r',encoding='utf-8') as fr: #读入已经去除停用词的文件 data = jieba.cut(fr.read()) data = dict(Counter(data))#dict()用于创建一个字典 counter()作用就是在一个数组内,遍历所有元素,将元素出现的次数记下来 with open(r"C:\Users\de'l'l\Desktop\学习\信息检索与原理\cipin.txt", 'w',encoding='utf-8') as fw: #读入存储wordcount的文件路径 for k, v in data.items(): fw.write('%s,%d\n' % (k, v))5.结果 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |